package main

//type IntSet struct {
//	words []uint64
//}
//
//// Has方法的返回值表示是否存在非负数x
//func (s *IntSet) Has(x int) bool {
//	word, bit := x/64, uint(x%64)
//	return word < len(s.words) && s.words[word]&(1<<bit) != 0
//}
//
//// Add添加非负数x集合中
//func (s *IntSet) Add(x int)  {
//	word, bit := x/64, uint(x%64)
//	for word >= len(s.words) {
//		s.words = append(s.words, 0)
//	}
//	s.words[word] |= 1 << bit
//}
//
//// UnionWith将会对s和t做并集并将结果存在s中
//func (s *IntSet) UnionWith(t *IntSet) {
//	for i, tword := range t.words {
//		if i < len(s.words) {
//			s.words[i] |= tword
//		} else {
//			s.words = append(s.words, tword)
//		}
//	}
//}
//
//func (s *IntSet) String() string {
//	var buf bytes.Buffer
//	buf.WriteByte('{')
//	for i, word := range s.words {
//		if word == 0 {
//			continue
//		}
//		for j := 0; j < 64; j++ {
//			if buf.Len() > len("{") {
//				buf.WriteByte(' ')
//			}
//			fmt.Fprintf(&buf, "%d", 64*i+j)
//		}
//	}
//	buf.WriteByte('}')
//	return buf.String()
//}
